// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Code generated by sidekick. DO NOT EDIT.

pub mod cluster_manager {
    use crate::Result;

    /// A builder for [ClusterManager][crate::client::ClusterManager].
    ///
    /// ```
    /// # tokio_test::block_on(async {
    /// # use google_cloud_container_v1::*;
    /// # use builder::cluster_manager::ClientBuilder;
    /// # use client::ClusterManager;
    /// let builder : ClientBuilder = ClusterManager::builder();
    /// let client = builder
    ///     .with_endpoint("https://container.googleapis.com")
    ///     .build().await?;
    /// # gax::client_builder::Result::<()>::Ok(()) });
    /// ```
    pub type ClientBuilder =
        gax::client_builder::ClientBuilder<client::Factory, gaxi::options::Credentials>;

    pub(crate) mod client {
        use super::super::super::client::ClusterManager;
        pub struct Factory;
        impl gax::client_builder::internal::ClientFactory for Factory {
            type Client = ClusterManager;
            type Credentials = gaxi::options::Credentials;
            async fn build(
                self,
                config: gaxi::options::ClientConfig,
            ) -> gax::client_builder::Result<Self::Client> {
                Self::Client::new(config).await
            }
        }
    }

    /// Common implementation for [crate::client::ClusterManager] request builders.
    #[derive(Clone, Debug)]
    pub(crate) struct RequestBuilder<R: std::default::Default> {
        stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        request: R,
        options: gax::options::RequestOptions,
    }

    impl<R> RequestBuilder<R>
    where
        R: std::default::Default,
    {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self {
                stub,
                request: R::default(),
                options: gax::options::RequestOptions::default(),
            }
        }
    }

    /// The request builder for [ClusterManager::list_clusters][crate::client::ClusterManager::list_clusters] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::ListClusters;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> ListClusters {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct ListClusters(RequestBuilder<crate::model::ListClustersRequest>);

    impl ListClusters {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::ListClustersRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::ListClustersResponse> {
            (*self.0.stub)
                .list_clusters(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::ListClustersRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::ListClustersRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [parent][crate::model::ListClustersRequest::parent].
        pub fn set_parent<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.parent = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for ListClusters {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::get_cluster][crate::client::ClusterManager::get_cluster] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::GetCluster;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> GetCluster {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct GetCluster(RequestBuilder<crate::model::GetClusterRequest>);

    impl GetCluster {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::GetClusterRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Cluster> {
            (*self.0.stub)
                .get_cluster(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::GetClusterRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::GetClusterRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::GetClusterRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [name][crate::model::GetClusterRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for GetCluster {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::create_cluster][crate::client::ClusterManager::create_cluster] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::CreateCluster;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> CreateCluster {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct CreateCluster(RequestBuilder<crate::model::CreateClusterRequest>);

    impl CreateCluster {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::CreateClusterRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .create_cluster(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::CreateClusterRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::CreateClusterRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster][crate::model::CreateClusterRequest::cluster].
        ///
        /// This is a **required** field for requests.
        pub fn set_cluster<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::Cluster>,
        {
            self.0.request.cluster = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [cluster][crate::model::CreateClusterRequest::cluster].
        ///
        /// This is a **required** field for requests.
        pub fn set_or_clear_cluster<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::Cluster>,
        {
            self.0.request.cluster = v.map(|x| x.into());
            self
        }

        /// Sets the value of [parent][crate::model::CreateClusterRequest::parent].
        pub fn set_parent<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.parent = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for CreateCluster {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::update_cluster][crate::client::ClusterManager::update_cluster] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::UpdateCluster;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> UpdateCluster {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct UpdateCluster(RequestBuilder<crate::model::UpdateClusterRequest>);

    impl UpdateCluster {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::UpdateClusterRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .update_cluster(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::UpdateClusterRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::UpdateClusterRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::UpdateClusterRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [update][crate::model::UpdateClusterRequest::update].
        ///
        /// This is a **required** field for requests.
        pub fn set_update<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::ClusterUpdate>,
        {
            self.0.request.update = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [update][crate::model::UpdateClusterRequest::update].
        ///
        /// This is a **required** field for requests.
        pub fn set_or_clear_update<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::ClusterUpdate>,
        {
            self.0.request.update = v.map(|x| x.into());
            self
        }

        /// Sets the value of [name][crate::model::UpdateClusterRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for UpdateCluster {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::update_node_pool][crate::client::ClusterManager::update_node_pool] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::UpdateNodePool;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> UpdateNodePool {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct UpdateNodePool(RequestBuilder<crate::model::UpdateNodePoolRequest>);

    impl UpdateNodePool {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::UpdateNodePoolRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .update_node_pool(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::UpdateNodePoolRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::UpdateNodePoolRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::UpdateNodePoolRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [node_pool_id][crate::model::UpdateNodePoolRequest::node_pool_id].
        #[deprecated]
        pub fn set_node_pool_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.node_pool_id = v.into();
            self
        }

        /// Sets the value of [node_version][crate::model::UpdateNodePoolRequest::node_version].
        ///
        /// This is a **required** field for requests.
        pub fn set_node_version<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.node_version = v.into();
            self
        }

        /// Sets the value of [image_type][crate::model::UpdateNodePoolRequest::image_type].
        ///
        /// This is a **required** field for requests.
        pub fn set_image_type<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.image_type = v.into();
            self
        }

        /// Sets the value of [name][crate::model::UpdateNodePoolRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }

        /// Sets the value of [locations][crate::model::UpdateNodePoolRequest::locations].
        pub fn set_locations<T, V>(mut self, v: T) -> Self
        where
            T: std::iter::IntoIterator<Item = V>,
            V: std::convert::Into<std::string::String>,
        {
            use std::iter::Iterator;
            self.0.request.locations = v.into_iter().map(|i| i.into()).collect();
            self
        }

        /// Sets the value of [workload_metadata_config][crate::model::UpdateNodePoolRequest::workload_metadata_config].
        pub fn set_workload_metadata_config<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::WorkloadMetadataConfig>,
        {
            self.0.request.workload_metadata_config = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [workload_metadata_config][crate::model::UpdateNodePoolRequest::workload_metadata_config].
        pub fn set_or_clear_workload_metadata_config<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::WorkloadMetadataConfig>,
        {
            self.0.request.workload_metadata_config = v.map(|x| x.into());
            self
        }

        /// Sets the value of [upgrade_settings][crate::model::UpdateNodePoolRequest::upgrade_settings].
        pub fn set_upgrade_settings<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::node_pool::UpgradeSettings>,
        {
            self.0.request.upgrade_settings = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [upgrade_settings][crate::model::UpdateNodePoolRequest::upgrade_settings].
        pub fn set_or_clear_upgrade_settings<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::node_pool::UpgradeSettings>,
        {
            self.0.request.upgrade_settings = v.map(|x| x.into());
            self
        }

        /// Sets the value of [tags][crate::model::UpdateNodePoolRequest::tags].
        pub fn set_tags<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::NetworkTags>,
        {
            self.0.request.tags = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [tags][crate::model::UpdateNodePoolRequest::tags].
        pub fn set_or_clear_tags<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::NetworkTags>,
        {
            self.0.request.tags = v.map(|x| x.into());
            self
        }

        /// Sets the value of [taints][crate::model::UpdateNodePoolRequest::taints].
        pub fn set_taints<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::NodeTaints>,
        {
            self.0.request.taints = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [taints][crate::model::UpdateNodePoolRequest::taints].
        pub fn set_or_clear_taints<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::NodeTaints>,
        {
            self.0.request.taints = v.map(|x| x.into());
            self
        }

        /// Sets the value of [labels][crate::model::UpdateNodePoolRequest::labels].
        pub fn set_labels<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::NodeLabels>,
        {
            self.0.request.labels = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [labels][crate::model::UpdateNodePoolRequest::labels].
        pub fn set_or_clear_labels<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::NodeLabels>,
        {
            self.0.request.labels = v.map(|x| x.into());
            self
        }

        /// Sets the value of [linux_node_config][crate::model::UpdateNodePoolRequest::linux_node_config].
        pub fn set_linux_node_config<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::LinuxNodeConfig>,
        {
            self.0.request.linux_node_config = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [linux_node_config][crate::model::UpdateNodePoolRequest::linux_node_config].
        pub fn set_or_clear_linux_node_config<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::LinuxNodeConfig>,
        {
            self.0.request.linux_node_config = v.map(|x| x.into());
            self
        }

        /// Sets the value of [kubelet_config][crate::model::UpdateNodePoolRequest::kubelet_config].
        pub fn set_kubelet_config<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::NodeKubeletConfig>,
        {
            self.0.request.kubelet_config = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [kubelet_config][crate::model::UpdateNodePoolRequest::kubelet_config].
        pub fn set_or_clear_kubelet_config<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::NodeKubeletConfig>,
        {
            self.0.request.kubelet_config = v.map(|x| x.into());
            self
        }

        /// Sets the value of [node_network_config][crate::model::UpdateNodePoolRequest::node_network_config].
        pub fn set_node_network_config<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::NodeNetworkConfig>,
        {
            self.0.request.node_network_config = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [node_network_config][crate::model::UpdateNodePoolRequest::node_network_config].
        pub fn set_or_clear_node_network_config<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::NodeNetworkConfig>,
        {
            self.0.request.node_network_config = v.map(|x| x.into());
            self
        }

        /// Sets the value of [gcfs_config][crate::model::UpdateNodePoolRequest::gcfs_config].
        pub fn set_gcfs_config<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::GcfsConfig>,
        {
            self.0.request.gcfs_config = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [gcfs_config][crate::model::UpdateNodePoolRequest::gcfs_config].
        pub fn set_or_clear_gcfs_config<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::GcfsConfig>,
        {
            self.0.request.gcfs_config = v.map(|x| x.into());
            self
        }

        /// Sets the value of [confidential_nodes][crate::model::UpdateNodePoolRequest::confidential_nodes].
        pub fn set_confidential_nodes<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::ConfidentialNodes>,
        {
            self.0.request.confidential_nodes = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [confidential_nodes][crate::model::UpdateNodePoolRequest::confidential_nodes].
        pub fn set_or_clear_confidential_nodes<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::ConfidentialNodes>,
        {
            self.0.request.confidential_nodes = v.map(|x| x.into());
            self
        }

        /// Sets the value of [gvnic][crate::model::UpdateNodePoolRequest::gvnic].
        pub fn set_gvnic<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::VirtualNIC>,
        {
            self.0.request.gvnic = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [gvnic][crate::model::UpdateNodePoolRequest::gvnic].
        pub fn set_or_clear_gvnic<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::VirtualNIC>,
        {
            self.0.request.gvnic = v.map(|x| x.into());
            self
        }

        /// Sets the value of [etag][crate::model::UpdateNodePoolRequest::etag].
        pub fn set_etag<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.etag = v.into();
            self
        }

        /// Sets the value of [fast_socket][crate::model::UpdateNodePoolRequest::fast_socket].
        pub fn set_fast_socket<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::FastSocket>,
        {
            self.0.request.fast_socket = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [fast_socket][crate::model::UpdateNodePoolRequest::fast_socket].
        pub fn set_or_clear_fast_socket<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::FastSocket>,
        {
            self.0.request.fast_socket = v.map(|x| x.into());
            self
        }

        /// Sets the value of [logging_config][crate::model::UpdateNodePoolRequest::logging_config].
        pub fn set_logging_config<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::NodePoolLoggingConfig>,
        {
            self.0.request.logging_config = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [logging_config][crate::model::UpdateNodePoolRequest::logging_config].
        pub fn set_or_clear_logging_config<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::NodePoolLoggingConfig>,
        {
            self.0.request.logging_config = v.map(|x| x.into());
            self
        }

        /// Sets the value of [resource_labels][crate::model::UpdateNodePoolRequest::resource_labels].
        pub fn set_resource_labels<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::ResourceLabels>,
        {
            self.0.request.resource_labels = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [resource_labels][crate::model::UpdateNodePoolRequest::resource_labels].
        pub fn set_or_clear_resource_labels<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::ResourceLabels>,
        {
            self.0.request.resource_labels = v.map(|x| x.into());
            self
        }

        /// Sets the value of [windows_node_config][crate::model::UpdateNodePoolRequest::windows_node_config].
        pub fn set_windows_node_config<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::WindowsNodeConfig>,
        {
            self.0.request.windows_node_config = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [windows_node_config][crate::model::UpdateNodePoolRequest::windows_node_config].
        pub fn set_or_clear_windows_node_config<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::WindowsNodeConfig>,
        {
            self.0.request.windows_node_config = v.map(|x| x.into());
            self
        }

        /// Sets the value of [accelerators][crate::model::UpdateNodePoolRequest::accelerators].
        pub fn set_accelerators<T, V>(mut self, v: T) -> Self
        where
            T: std::iter::IntoIterator<Item = V>,
            V: std::convert::Into<crate::model::AcceleratorConfig>,
        {
            use std::iter::Iterator;
            self.0.request.accelerators = v.into_iter().map(|i| i.into()).collect();
            self
        }

        /// Sets the value of [machine_type][crate::model::UpdateNodePoolRequest::machine_type].
        pub fn set_machine_type<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.machine_type = v.into();
            self
        }

        /// Sets the value of [disk_type][crate::model::UpdateNodePoolRequest::disk_type].
        pub fn set_disk_type<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.disk_type = v.into();
            self
        }

        /// Sets the value of [disk_size_gb][crate::model::UpdateNodePoolRequest::disk_size_gb].
        pub fn set_disk_size_gb<T: Into<i64>>(mut self, v: T) -> Self {
            self.0.request.disk_size_gb = v.into();
            self
        }

        /// Sets the value of [resource_manager_tags][crate::model::UpdateNodePoolRequest::resource_manager_tags].
        pub fn set_resource_manager_tags<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::ResourceManagerTags>,
        {
            self.0.request.resource_manager_tags = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [resource_manager_tags][crate::model::UpdateNodePoolRequest::resource_manager_tags].
        pub fn set_or_clear_resource_manager_tags<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::ResourceManagerTags>,
        {
            self.0.request.resource_manager_tags = v.map(|x| x.into());
            self
        }

        /// Sets the value of [containerd_config][crate::model::UpdateNodePoolRequest::containerd_config].
        pub fn set_containerd_config<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::ContainerdConfig>,
        {
            self.0.request.containerd_config = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [containerd_config][crate::model::UpdateNodePoolRequest::containerd_config].
        pub fn set_or_clear_containerd_config<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::ContainerdConfig>,
        {
            self.0.request.containerd_config = v.map(|x| x.into());
            self
        }

        /// Sets the value of [queued_provisioning][crate::model::UpdateNodePoolRequest::queued_provisioning].
        pub fn set_queued_provisioning<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::node_pool::QueuedProvisioning>,
        {
            self.0.request.queued_provisioning = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [queued_provisioning][crate::model::UpdateNodePoolRequest::queued_provisioning].
        pub fn set_or_clear_queued_provisioning<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::node_pool::QueuedProvisioning>,
        {
            self.0.request.queued_provisioning = v.map(|x| x.into());
            self
        }

        /// Sets the value of [storage_pools][crate::model::UpdateNodePoolRequest::storage_pools].
        pub fn set_storage_pools<T, V>(mut self, v: T) -> Self
        where
            T: std::iter::IntoIterator<Item = V>,
            V: std::convert::Into<std::string::String>,
        {
            use std::iter::Iterator;
            self.0.request.storage_pools = v.into_iter().map(|i| i.into()).collect();
            self
        }

        /// Sets the value of [max_run_duration][crate::model::UpdateNodePoolRequest::max_run_duration].
        pub fn set_max_run_duration<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<wkt::Duration>,
        {
            self.0.request.max_run_duration = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [max_run_duration][crate::model::UpdateNodePoolRequest::max_run_duration].
        pub fn set_or_clear_max_run_duration<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<wkt::Duration>,
        {
            self.0.request.max_run_duration = v.map(|x| x.into());
            self
        }

        /// Sets the value of [flex_start][crate::model::UpdateNodePoolRequest::flex_start].
        pub fn set_flex_start<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<bool>,
        {
            self.0.request.flex_start = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [flex_start][crate::model::UpdateNodePoolRequest::flex_start].
        pub fn set_or_clear_flex_start<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<bool>,
        {
            self.0.request.flex_start = v.map(|x| x.into());
            self
        }

        /// Sets the value of [boot_disk][crate::model::UpdateNodePoolRequest::boot_disk].
        pub fn set_boot_disk<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::BootDisk>,
        {
            self.0.request.boot_disk = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [boot_disk][crate::model::UpdateNodePoolRequest::boot_disk].
        pub fn set_or_clear_boot_disk<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::BootDisk>,
        {
            self.0.request.boot_disk = v.map(|x| x.into());
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for UpdateNodePool {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::set_node_pool_autoscaling][crate::client::ClusterManager::set_node_pool_autoscaling] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::SetNodePoolAutoscaling;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> SetNodePoolAutoscaling {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct SetNodePoolAutoscaling(RequestBuilder<crate::model::SetNodePoolAutoscalingRequest>);

    impl SetNodePoolAutoscaling {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::SetNodePoolAutoscalingRequest>>(
            mut self,
            v: V,
        ) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .set_node_pool_autoscaling(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::SetNodePoolAutoscalingRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::SetNodePoolAutoscalingRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::SetNodePoolAutoscalingRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [node_pool_id][crate::model::SetNodePoolAutoscalingRequest::node_pool_id].
        #[deprecated]
        pub fn set_node_pool_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.node_pool_id = v.into();
            self
        }

        /// Sets the value of [autoscaling][crate::model::SetNodePoolAutoscalingRequest::autoscaling].
        ///
        /// This is a **required** field for requests.
        pub fn set_autoscaling<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::NodePoolAutoscaling>,
        {
            self.0.request.autoscaling = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [autoscaling][crate::model::SetNodePoolAutoscalingRequest::autoscaling].
        ///
        /// This is a **required** field for requests.
        pub fn set_or_clear_autoscaling<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::NodePoolAutoscaling>,
        {
            self.0.request.autoscaling = v.map(|x| x.into());
            self
        }

        /// Sets the value of [name][crate::model::SetNodePoolAutoscalingRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for SetNodePoolAutoscaling {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::set_logging_service][crate::client::ClusterManager::set_logging_service] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::SetLoggingService;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> SetLoggingService {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct SetLoggingService(RequestBuilder<crate::model::SetLoggingServiceRequest>);

    impl SetLoggingService {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::SetLoggingServiceRequest>>(
            mut self,
            v: V,
        ) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .set_logging_service(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::SetLoggingServiceRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::SetLoggingServiceRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::SetLoggingServiceRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [logging_service][crate::model::SetLoggingServiceRequest::logging_service].
        ///
        /// This is a **required** field for requests.
        pub fn set_logging_service<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.logging_service = v.into();
            self
        }

        /// Sets the value of [name][crate::model::SetLoggingServiceRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for SetLoggingService {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::set_monitoring_service][crate::client::ClusterManager::set_monitoring_service] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::SetMonitoringService;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> SetMonitoringService {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct SetMonitoringService(RequestBuilder<crate::model::SetMonitoringServiceRequest>);

    impl SetMonitoringService {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::SetMonitoringServiceRequest>>(
            mut self,
            v: V,
        ) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .set_monitoring_service(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::SetMonitoringServiceRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::SetMonitoringServiceRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::SetMonitoringServiceRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [monitoring_service][crate::model::SetMonitoringServiceRequest::monitoring_service].
        ///
        /// This is a **required** field for requests.
        pub fn set_monitoring_service<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.monitoring_service = v.into();
            self
        }

        /// Sets the value of [name][crate::model::SetMonitoringServiceRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for SetMonitoringService {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::set_addons_config][crate::client::ClusterManager::set_addons_config] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::SetAddonsConfig;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> SetAddonsConfig {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct SetAddonsConfig(RequestBuilder<crate::model::SetAddonsConfigRequest>);

    impl SetAddonsConfig {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::SetAddonsConfigRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .set_addons_config(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::SetAddonsConfigRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::SetAddonsConfigRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::SetAddonsConfigRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [addons_config][crate::model::SetAddonsConfigRequest::addons_config].
        ///
        /// This is a **required** field for requests.
        pub fn set_addons_config<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::AddonsConfig>,
        {
            self.0.request.addons_config = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [addons_config][crate::model::SetAddonsConfigRequest::addons_config].
        ///
        /// This is a **required** field for requests.
        pub fn set_or_clear_addons_config<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::AddonsConfig>,
        {
            self.0.request.addons_config = v.map(|x| x.into());
            self
        }

        /// Sets the value of [name][crate::model::SetAddonsConfigRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for SetAddonsConfig {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::set_locations][crate::client::ClusterManager::set_locations] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::SetLocations;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> SetLocations {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct SetLocations(RequestBuilder<crate::model::SetLocationsRequest>);

    impl SetLocations {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::SetLocationsRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .set_locations(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::SetLocationsRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::SetLocationsRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::SetLocationsRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [locations][crate::model::SetLocationsRequest::locations].
        ///
        /// This is a **required** field for requests.
        pub fn set_locations<T, V>(mut self, v: T) -> Self
        where
            T: std::iter::IntoIterator<Item = V>,
            V: std::convert::Into<std::string::String>,
        {
            use std::iter::Iterator;
            self.0.request.locations = v.into_iter().map(|i| i.into()).collect();
            self
        }

        /// Sets the value of [name][crate::model::SetLocationsRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for SetLocations {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::update_master][crate::client::ClusterManager::update_master] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::UpdateMaster;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> UpdateMaster {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct UpdateMaster(RequestBuilder<crate::model::UpdateMasterRequest>);

    impl UpdateMaster {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::UpdateMasterRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .update_master(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::UpdateMasterRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::UpdateMasterRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::UpdateMasterRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [master_version][crate::model::UpdateMasterRequest::master_version].
        ///
        /// This is a **required** field for requests.
        pub fn set_master_version<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.master_version = v.into();
            self
        }

        /// Sets the value of [name][crate::model::UpdateMasterRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for UpdateMaster {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::set_master_auth][crate::client::ClusterManager::set_master_auth] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::SetMasterAuth;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> SetMasterAuth {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct SetMasterAuth(RequestBuilder<crate::model::SetMasterAuthRequest>);

    impl SetMasterAuth {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::SetMasterAuthRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .set_master_auth(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::SetMasterAuthRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::SetMasterAuthRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::SetMasterAuthRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [action][crate::model::SetMasterAuthRequest::action].
        ///
        /// This is a **required** field for requests.
        pub fn set_action<T: Into<crate::model::set_master_auth_request::Action>>(
            mut self,
            v: T,
        ) -> Self {
            self.0.request.action = v.into();
            self
        }

        /// Sets the value of [update][crate::model::SetMasterAuthRequest::update].
        ///
        /// This is a **required** field for requests.
        pub fn set_update<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::MasterAuth>,
        {
            self.0.request.update = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [update][crate::model::SetMasterAuthRequest::update].
        ///
        /// This is a **required** field for requests.
        pub fn set_or_clear_update<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::MasterAuth>,
        {
            self.0.request.update = v.map(|x| x.into());
            self
        }

        /// Sets the value of [name][crate::model::SetMasterAuthRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for SetMasterAuth {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::delete_cluster][crate::client::ClusterManager::delete_cluster] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::DeleteCluster;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> DeleteCluster {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct DeleteCluster(RequestBuilder<crate::model::DeleteClusterRequest>);

    impl DeleteCluster {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::DeleteClusterRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .delete_cluster(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::DeleteClusterRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::DeleteClusterRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::DeleteClusterRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [name][crate::model::DeleteClusterRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for DeleteCluster {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::list_operations][crate::client::ClusterManager::list_operations] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::ListOperations;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> ListOperations {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct ListOperations(RequestBuilder<crate::model::ListOperationsRequest>);

    impl ListOperations {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::ListOperationsRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::ListOperationsResponse> {
            (*self.0.stub)
                .list_operations(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::ListOperationsRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::ListOperationsRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [parent][crate::model::ListOperationsRequest::parent].
        pub fn set_parent<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.parent = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for ListOperations {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::get_operation][crate::client::ClusterManager::get_operation] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::GetOperation;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> GetOperation {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct GetOperation(RequestBuilder<crate::model::GetOperationRequest>);

    impl GetOperation {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::GetOperationRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .get_operation(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::GetOperationRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::GetOperationRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [operation_id][crate::model::GetOperationRequest::operation_id].
        #[deprecated]
        pub fn set_operation_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.operation_id = v.into();
            self
        }

        /// Sets the value of [name][crate::model::GetOperationRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for GetOperation {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::cancel_operation][crate::client::ClusterManager::cancel_operation] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::CancelOperation;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> CancelOperation {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct CancelOperation(RequestBuilder<crate::model::CancelOperationRequest>);

    impl CancelOperation {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::CancelOperationRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<()> {
            (*self.0.stub)
                .cancel_operation(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::CancelOperationRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::CancelOperationRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [operation_id][crate::model::CancelOperationRequest::operation_id].
        #[deprecated]
        pub fn set_operation_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.operation_id = v.into();
            self
        }

        /// Sets the value of [name][crate::model::CancelOperationRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for CancelOperation {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::get_server_config][crate::client::ClusterManager::get_server_config] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::GetServerConfig;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> GetServerConfig {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct GetServerConfig(RequestBuilder<crate::model::GetServerConfigRequest>);

    impl GetServerConfig {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::GetServerConfigRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::ServerConfig> {
            (*self.0.stub)
                .get_server_config(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::GetServerConfigRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::GetServerConfigRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [name][crate::model::GetServerConfigRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for GetServerConfig {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::get_json_web_keys][crate::client::ClusterManager::get_json_web_keys] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::GetJSONWebKeys;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> GetJSONWebKeys {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct GetJSONWebKeys(RequestBuilder<crate::model::GetJSONWebKeysRequest>);

    impl GetJSONWebKeys {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::GetJSONWebKeysRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::GetJSONWebKeysResponse> {
            (*self.0.stub)
                .get_json_web_keys(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [parent][crate::model::GetJSONWebKeysRequest::parent].
        pub fn set_parent<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.parent = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for GetJSONWebKeys {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::list_node_pools][crate::client::ClusterManager::list_node_pools] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::ListNodePools;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> ListNodePools {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct ListNodePools(RequestBuilder<crate::model::ListNodePoolsRequest>);

    impl ListNodePools {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::ListNodePoolsRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::ListNodePoolsResponse> {
            (*self.0.stub)
                .list_node_pools(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::ListNodePoolsRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::ListNodePoolsRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::ListNodePoolsRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [parent][crate::model::ListNodePoolsRequest::parent].
        pub fn set_parent<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.parent = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for ListNodePools {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::get_node_pool][crate::client::ClusterManager::get_node_pool] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::GetNodePool;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> GetNodePool {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct GetNodePool(RequestBuilder<crate::model::GetNodePoolRequest>);

    impl GetNodePool {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::GetNodePoolRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::NodePool> {
            (*self.0.stub)
                .get_node_pool(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::GetNodePoolRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::GetNodePoolRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::GetNodePoolRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [node_pool_id][crate::model::GetNodePoolRequest::node_pool_id].
        #[deprecated]
        pub fn set_node_pool_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.node_pool_id = v.into();
            self
        }

        /// Sets the value of [name][crate::model::GetNodePoolRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for GetNodePool {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::create_node_pool][crate::client::ClusterManager::create_node_pool] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::CreateNodePool;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> CreateNodePool {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct CreateNodePool(RequestBuilder<crate::model::CreateNodePoolRequest>);

    impl CreateNodePool {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::CreateNodePoolRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .create_node_pool(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::CreateNodePoolRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::CreateNodePoolRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::CreateNodePoolRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [node_pool][crate::model::CreateNodePoolRequest::node_pool].
        ///
        /// This is a **required** field for requests.
        pub fn set_node_pool<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::NodePool>,
        {
            self.0.request.node_pool = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [node_pool][crate::model::CreateNodePoolRequest::node_pool].
        ///
        /// This is a **required** field for requests.
        pub fn set_or_clear_node_pool<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::NodePool>,
        {
            self.0.request.node_pool = v.map(|x| x.into());
            self
        }

        /// Sets the value of [parent][crate::model::CreateNodePoolRequest::parent].
        pub fn set_parent<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.parent = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for CreateNodePool {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::delete_node_pool][crate::client::ClusterManager::delete_node_pool] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::DeleteNodePool;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> DeleteNodePool {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct DeleteNodePool(RequestBuilder<crate::model::DeleteNodePoolRequest>);

    impl DeleteNodePool {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::DeleteNodePoolRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .delete_node_pool(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::DeleteNodePoolRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::DeleteNodePoolRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::DeleteNodePoolRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [node_pool_id][crate::model::DeleteNodePoolRequest::node_pool_id].
        #[deprecated]
        pub fn set_node_pool_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.node_pool_id = v.into();
            self
        }

        /// Sets the value of [name][crate::model::DeleteNodePoolRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for DeleteNodePool {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::complete_node_pool_upgrade][crate::client::ClusterManager::complete_node_pool_upgrade] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::CompleteNodePoolUpgrade;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> CompleteNodePoolUpgrade {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct CompleteNodePoolUpgrade(
        RequestBuilder<crate::model::CompleteNodePoolUpgradeRequest>,
    );

    impl CompleteNodePoolUpgrade {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::CompleteNodePoolUpgradeRequest>>(
            mut self,
            v: V,
        ) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<()> {
            (*self.0.stub)
                .complete_node_pool_upgrade(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [name][crate::model::CompleteNodePoolUpgradeRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for CompleteNodePoolUpgrade {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::rollback_node_pool_upgrade][crate::client::ClusterManager::rollback_node_pool_upgrade] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::RollbackNodePoolUpgrade;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> RollbackNodePoolUpgrade {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct RollbackNodePoolUpgrade(
        RequestBuilder<crate::model::RollbackNodePoolUpgradeRequest>,
    );

    impl RollbackNodePoolUpgrade {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::RollbackNodePoolUpgradeRequest>>(
            mut self,
            v: V,
        ) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .rollback_node_pool_upgrade(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::RollbackNodePoolUpgradeRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::RollbackNodePoolUpgradeRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::RollbackNodePoolUpgradeRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [node_pool_id][crate::model::RollbackNodePoolUpgradeRequest::node_pool_id].
        #[deprecated]
        pub fn set_node_pool_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.node_pool_id = v.into();
            self
        }

        /// Sets the value of [name][crate::model::RollbackNodePoolUpgradeRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }

        /// Sets the value of [respect_pdb][crate::model::RollbackNodePoolUpgradeRequest::respect_pdb].
        pub fn set_respect_pdb<T: Into<bool>>(mut self, v: T) -> Self {
            self.0.request.respect_pdb = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for RollbackNodePoolUpgrade {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::set_node_pool_management][crate::client::ClusterManager::set_node_pool_management] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::SetNodePoolManagement;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> SetNodePoolManagement {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct SetNodePoolManagement(RequestBuilder<crate::model::SetNodePoolManagementRequest>);

    impl SetNodePoolManagement {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::SetNodePoolManagementRequest>>(
            mut self,
            v: V,
        ) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .set_node_pool_management(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::SetNodePoolManagementRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::SetNodePoolManagementRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::SetNodePoolManagementRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [node_pool_id][crate::model::SetNodePoolManagementRequest::node_pool_id].
        #[deprecated]
        pub fn set_node_pool_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.node_pool_id = v.into();
            self
        }

        /// Sets the value of [management][crate::model::SetNodePoolManagementRequest::management].
        ///
        /// This is a **required** field for requests.
        pub fn set_management<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::NodeManagement>,
        {
            self.0.request.management = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [management][crate::model::SetNodePoolManagementRequest::management].
        ///
        /// This is a **required** field for requests.
        pub fn set_or_clear_management<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::NodeManagement>,
        {
            self.0.request.management = v.map(|x| x.into());
            self
        }

        /// Sets the value of [name][crate::model::SetNodePoolManagementRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for SetNodePoolManagement {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::set_labels][crate::client::ClusterManager::set_labels] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::SetLabels;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> SetLabels {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct SetLabels(RequestBuilder<crate::model::SetLabelsRequest>);

    impl SetLabels {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::SetLabelsRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .set_labels(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::SetLabelsRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::SetLabelsRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::SetLabelsRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [resource_labels][crate::model::SetLabelsRequest::resource_labels].
        ///
        /// This is a **required** field for requests.
        pub fn set_resource_labels<T, K, V>(mut self, v: T) -> Self
        where
            T: std::iter::IntoIterator<Item = (K, V)>,
            K: std::convert::Into<std::string::String>,
            V: std::convert::Into<std::string::String>,
        {
            self.0.request.resource_labels =
                v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
            self
        }

        /// Sets the value of [label_fingerprint][crate::model::SetLabelsRequest::label_fingerprint].
        ///
        /// This is a **required** field for requests.
        pub fn set_label_fingerprint<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.label_fingerprint = v.into();
            self
        }

        /// Sets the value of [name][crate::model::SetLabelsRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for SetLabels {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::set_legacy_abac][crate::client::ClusterManager::set_legacy_abac] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::SetLegacyAbac;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> SetLegacyAbac {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct SetLegacyAbac(RequestBuilder<crate::model::SetLegacyAbacRequest>);

    impl SetLegacyAbac {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::SetLegacyAbacRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .set_legacy_abac(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::SetLegacyAbacRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::SetLegacyAbacRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::SetLegacyAbacRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [enabled][crate::model::SetLegacyAbacRequest::enabled].
        ///
        /// This is a **required** field for requests.
        pub fn set_enabled<T: Into<bool>>(mut self, v: T) -> Self {
            self.0.request.enabled = v.into();
            self
        }

        /// Sets the value of [name][crate::model::SetLegacyAbacRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for SetLegacyAbac {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::start_ip_rotation][crate::client::ClusterManager::start_ip_rotation] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::StartIPRotation;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> StartIPRotation {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct StartIPRotation(RequestBuilder<crate::model::StartIPRotationRequest>);

    impl StartIPRotation {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::StartIPRotationRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .start_ip_rotation(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::StartIPRotationRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::StartIPRotationRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::StartIPRotationRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [name][crate::model::StartIPRotationRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }

        /// Sets the value of [rotate_credentials][crate::model::StartIPRotationRequest::rotate_credentials].
        pub fn set_rotate_credentials<T: Into<bool>>(mut self, v: T) -> Self {
            self.0.request.rotate_credentials = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for StartIPRotation {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::complete_ip_rotation][crate::client::ClusterManager::complete_ip_rotation] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::CompleteIPRotation;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> CompleteIPRotation {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct CompleteIPRotation(RequestBuilder<crate::model::CompleteIPRotationRequest>);

    impl CompleteIPRotation {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::CompleteIPRotationRequest>>(
            mut self,
            v: V,
        ) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .complete_ip_rotation(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::CompleteIPRotationRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::CompleteIPRotationRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::CompleteIPRotationRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [name][crate::model::CompleteIPRotationRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for CompleteIPRotation {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::set_node_pool_size][crate::client::ClusterManager::set_node_pool_size] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::SetNodePoolSize;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> SetNodePoolSize {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct SetNodePoolSize(RequestBuilder<crate::model::SetNodePoolSizeRequest>);

    impl SetNodePoolSize {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::SetNodePoolSizeRequest>>(mut self, v: V) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .set_node_pool_size(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::SetNodePoolSizeRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::SetNodePoolSizeRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::SetNodePoolSizeRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [node_pool_id][crate::model::SetNodePoolSizeRequest::node_pool_id].
        #[deprecated]
        pub fn set_node_pool_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.node_pool_id = v.into();
            self
        }

        /// Sets the value of [node_count][crate::model::SetNodePoolSizeRequest::node_count].
        ///
        /// This is a **required** field for requests.
        pub fn set_node_count<T: Into<i32>>(mut self, v: T) -> Self {
            self.0.request.node_count = v.into();
            self
        }

        /// Sets the value of [name][crate::model::SetNodePoolSizeRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for SetNodePoolSize {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::set_network_policy][crate::client::ClusterManager::set_network_policy] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::SetNetworkPolicy;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> SetNetworkPolicy {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct SetNetworkPolicy(RequestBuilder<crate::model::SetNetworkPolicyRequest>);

    impl SetNetworkPolicy {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::SetNetworkPolicyRequest>>(
            mut self,
            v: V,
        ) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .set_network_policy(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::SetNetworkPolicyRequest::project_id].
        #[deprecated]
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::SetNetworkPolicyRequest::zone].
        #[deprecated]
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::SetNetworkPolicyRequest::cluster_id].
        #[deprecated]
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [network_policy][crate::model::SetNetworkPolicyRequest::network_policy].
        ///
        /// This is a **required** field for requests.
        pub fn set_network_policy<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::NetworkPolicy>,
        {
            self.0.request.network_policy = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [network_policy][crate::model::SetNetworkPolicyRequest::network_policy].
        ///
        /// This is a **required** field for requests.
        pub fn set_or_clear_network_policy<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::NetworkPolicy>,
        {
            self.0.request.network_policy = v.map(|x| x.into());
            self
        }

        /// Sets the value of [name][crate::model::SetNetworkPolicyRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for SetNetworkPolicy {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::set_maintenance_policy][crate::client::ClusterManager::set_maintenance_policy] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::SetMaintenancePolicy;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> SetMaintenancePolicy {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct SetMaintenancePolicy(RequestBuilder<crate::model::SetMaintenancePolicyRequest>);

    impl SetMaintenancePolicy {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::SetMaintenancePolicyRequest>>(
            mut self,
            v: V,
        ) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::Operation> {
            (*self.0.stub)
                .set_maintenance_policy(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [project_id][crate::model::SetMaintenancePolicyRequest::project_id].
        ///
        /// This is a **required** field for requests.
        pub fn set_project_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.project_id = v.into();
            self
        }

        /// Sets the value of [zone][crate::model::SetMaintenancePolicyRequest::zone].
        ///
        /// This is a **required** field for requests.
        pub fn set_zone<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.zone = v.into();
            self
        }

        /// Sets the value of [cluster_id][crate::model::SetMaintenancePolicyRequest::cluster_id].
        ///
        /// This is a **required** field for requests.
        pub fn set_cluster_id<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.cluster_id = v.into();
            self
        }

        /// Sets the value of [maintenance_policy][crate::model::SetMaintenancePolicyRequest::maintenance_policy].
        ///
        /// This is a **required** field for requests.
        pub fn set_maintenance_policy<T>(mut self, v: T) -> Self
        where
            T: std::convert::Into<crate::model::MaintenancePolicy>,
        {
            self.0.request.maintenance_policy = std::option::Option::Some(v.into());
            self
        }

        /// Sets or clears the value of [maintenance_policy][crate::model::SetMaintenancePolicyRequest::maintenance_policy].
        ///
        /// This is a **required** field for requests.
        pub fn set_or_clear_maintenance_policy<T>(mut self, v: std::option::Option<T>) -> Self
        where
            T: std::convert::Into<crate::model::MaintenancePolicy>,
        {
            self.0.request.maintenance_policy = v.map(|x| x.into());
            self
        }

        /// Sets the value of [name][crate::model::SetMaintenancePolicyRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for SetMaintenancePolicy {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::list_usable_subnetworks][crate::client::ClusterManager::list_usable_subnetworks] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::ListUsableSubnetworks;
    /// # tokio_test::block_on(async {
    /// use gax::paginator::ItemPaginator;
    ///
    /// let builder = prepare_request_builder();
    /// let mut items = builder.by_item();
    /// while let Some(result) = items.next().await {
    ///   let item = result?;
    /// }
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> ListUsableSubnetworks {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct ListUsableSubnetworks(RequestBuilder<crate::model::ListUsableSubnetworksRequest>);

    impl ListUsableSubnetworks {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::ListUsableSubnetworksRequest>>(
            mut self,
            v: V,
        ) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::ListUsableSubnetworksResponse> {
            (*self.0.stub)
                .list_usable_subnetworks(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Streams each page in the collection.
        pub fn by_page(
            self,
        ) -> impl gax::paginator::Paginator<crate::model::ListUsableSubnetworksResponse, gax::error::Error>
        {
            use std::clone::Clone;
            let token = self.0.request.page_token.clone();
            let execute = move |token: String| {
                let mut builder = self.clone();
                builder.0.request = builder.0.request.set_page_token(token);
                builder.send()
            };
            gax::paginator::internal::new_paginator(token, execute)
        }

        /// Streams each item in the collection.
        pub fn by_item(
            self,
        ) -> impl gax::paginator::ItemPaginator<
            crate::model::ListUsableSubnetworksResponse,
            gax::error::Error,
        > {
            use gax::paginator::Paginator;
            self.by_page().items()
        }

        /// Sets the value of [parent][crate::model::ListUsableSubnetworksRequest::parent].
        pub fn set_parent<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.parent = v.into();
            self
        }

        /// Sets the value of [filter][crate::model::ListUsableSubnetworksRequest::filter].
        pub fn set_filter<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.filter = v.into();
            self
        }

        /// Sets the value of [page_size][crate::model::ListUsableSubnetworksRequest::page_size].
        pub fn set_page_size<T: Into<i32>>(mut self, v: T) -> Self {
            self.0.request.page_size = v.into();
            self
        }

        /// Sets the value of [page_token][crate::model::ListUsableSubnetworksRequest::page_token].
        pub fn set_page_token<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.page_token = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for ListUsableSubnetworks {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::check_autopilot_compatibility][crate::client::ClusterManager::check_autopilot_compatibility] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::CheckAutopilotCompatibility;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> CheckAutopilotCompatibility {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct CheckAutopilotCompatibility(
        RequestBuilder<crate::model::CheckAutopilotCompatibilityRequest>,
    );

    impl CheckAutopilotCompatibility {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::CheckAutopilotCompatibilityRequest>>(
            mut self,
            v: V,
        ) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::CheckAutopilotCompatibilityResponse> {
            (*self.0.stub)
                .check_autopilot_compatibility(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [name][crate::model::CheckAutopilotCompatibilityRequest::name].
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for CheckAutopilotCompatibility {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::fetch_cluster_upgrade_info][crate::client::ClusterManager::fetch_cluster_upgrade_info] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::FetchClusterUpgradeInfo;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> FetchClusterUpgradeInfo {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct FetchClusterUpgradeInfo(
        RequestBuilder<crate::model::FetchClusterUpgradeInfoRequest>,
    );

    impl FetchClusterUpgradeInfo {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::FetchClusterUpgradeInfoRequest>>(
            mut self,
            v: V,
        ) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::ClusterUpgradeInfo> {
            (*self.0.stub)
                .fetch_cluster_upgrade_info(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [name][crate::model::FetchClusterUpgradeInfoRequest::name].
        ///
        /// This is a **required** field for requests.
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }

        /// Sets the value of [version][crate::model::FetchClusterUpgradeInfoRequest::version].
        pub fn set_version<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.version = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for FetchClusterUpgradeInfo {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }

    /// The request builder for [ClusterManager::fetch_node_pool_upgrade_info][crate::client::ClusterManager::fetch_node_pool_upgrade_info] calls.
    ///
    /// # Example
    /// ```no_run
    /// # use google_cloud_container_v1::builder;
    /// use builder::cluster_manager::FetchNodePoolUpgradeInfo;
    /// # tokio_test::block_on(async {
    ///
    /// let builder = prepare_request_builder();
    /// let response = builder.send().await?;
    /// # gax::Result::<()>::Ok(()) });
    ///
    /// fn prepare_request_builder() -> FetchNodePoolUpgradeInfo {
    ///   # panic!();
    ///   // ... details omitted ...
    /// }
    /// ```
    #[derive(Clone, Debug)]
    pub struct FetchNodePoolUpgradeInfo(
        RequestBuilder<crate::model::FetchNodePoolUpgradeInfoRequest>,
    );

    impl FetchNodePoolUpgradeInfo {
        pub(crate) fn new(
            stub: std::sync::Arc<dyn super::super::stub::dynamic::ClusterManager>,
        ) -> Self {
            Self(RequestBuilder::new(stub))
        }

        /// Sets the full request, replacing any prior values.
        pub fn with_request<V: Into<crate::model::FetchNodePoolUpgradeInfoRequest>>(
            mut self,
            v: V,
        ) -> Self {
            self.0.request = v.into();
            self
        }

        /// Sets all the options, replacing any prior values.
        pub fn with_options<V: Into<gax::options::RequestOptions>>(mut self, v: V) -> Self {
            self.0.options = v.into();
            self
        }

        /// Sends the request.
        pub async fn send(self) -> Result<crate::model::NodePoolUpgradeInfo> {
            (*self.0.stub)
                .fetch_node_pool_upgrade_info(self.0.request, self.0.options)
                .await
                .map(gax::response::Response::into_body)
        }

        /// Sets the value of [name][crate::model::FetchNodePoolUpgradeInfoRequest::name].
        ///
        /// This is a **required** field for requests.
        pub fn set_name<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.name = v.into();
            self
        }

        /// Sets the value of [version][crate::model::FetchNodePoolUpgradeInfoRequest::version].
        pub fn set_version<T: Into<std::string::String>>(mut self, v: T) -> Self {
            self.0.request.version = v.into();
            self
        }
    }

    #[doc(hidden)]
    impl gax::options::internal::RequestBuilder for FetchNodePoolUpgradeInfo {
        fn request_options(&mut self) -> &mut gax::options::RequestOptions {
            &mut self.0.options
        }
    }
}
